How Computers communicate with each other on Internet. URL, Port, DNS, Protocols

नमस्ते दोस्तों 🙏

इस लेख में हम समझेंगे कि कैसे कंप्यूटर इंटरनेट पर एक दुसरे से कम्युनिकेट करते हैं। पोस्ट में हम निम्नलिखित विन्दुओं पर चर्चा करेंगे

  • क्लाइंट मशीन 
  • सर्वर मशीन
  • वेबपेज, वेबहोस्ट और वेबसाइट
  • यूआरएल और यूआरएल एनकोडिंग
  • यूआरएल पोर्ट का महत्व
  • वर्चुअल डायरेक्टरी
  • डीएनएस 
  • डोमेन
  • डिफॉल्ट पेज
  • HTTP प्रोटोकोल

क्लाइंट और  सर्वर 

वेब टेक्नोलॉजी के अंतर्गत वेब कम्युनिकेशन हमेशा दो मशीनों के बीच में होता है। जो मशीन रिक्वेस्ट को भेजता है उसे क्लाइंट मशीन कहते हैं और जो मशीन उस रिक्वेस्ट को प्रोसेस करके रिस्पांस देता है उसे सर्वर मशीन कहते हैं। सर्वर मशीन को वेबसर्वर/फ़ाइल सर्वर/मेल सर्वर भी कहते हैं, यह नाम उनके सर्विसेज के आधार पर निर्धारित किया जाता है। वेबसर्वर सॉफ्टवेयर है जिसका उपयोग रिक्वेस्ट को प्रोसेस करने के लिए किया जाता है। 

एक डेवलपर के रूप में जब हम वेब ऐप्लिकेशन डिवेलप करते हैं तब जिस मशीन पर हम कोडिंग करते हैं वह मशीन क्लाइंट मशीन का भी काम करता है और सर्वर मशीन का भी काम करता है। डेवलपमेंट एनवायरनमेंट में जो भी सर्वर से जुड़े सॉफ्टवेयर होते हैं वह क्लाइंट मशीन पर ही इंस्टॉल होता है।

वेबपेज, वेबहोस्ट और वेबसाइट 

इसके विपरीत, वास्तविक जगत में जो वेबसाइट होते हैं वह किसी वेब सर्वर पर होस्ट होते हैं। होस्ट होने का अर्थ यह है कि वेबसाइट जो कि कई सारे वेबपेज से मिलकर बना होता है, सर्वर के किसी drive के फोल्डर में इंस्टॉल होता है और उन वेबपेज को प्रोसेस करने के लिए सर्वर पर आवश्यक सॉफ्टवेयर.इनस्टॉल है। उदाहरण के लिए ASP.NET के वेबपेज को प्रोसेस करने के लिए सॉफ्टवेयर NET SDK  होना आवश्यक है। वस्तुतः वेबपेज और ऐसे अन्य संसाधनों का संग्रह वेबसाइट कहलाता है।

यूआरएल 

यूआरएल वेब डेवलपमेंट से जुडा एक महत्वपूर्ण भाग है आइए यूआरएल को नजदीक से समझते हैं यूआरएल की संरचना को समझने के लिए निम्नलिखित यूआरएल के उदाहरण पर विचार करते हैं 

http://www.example.com:80/folder1/folder2/index.html?name="Ajeet"&age=20

किसी भी यूआरएल के अलग-अलग हिस्से होते हैं जिनको समझना जरूरी है।

SYNTAX: scheme://prefix.host:port/path/filename?queryString

यूआरएल हमेशा कुछ शर्तों के अधीन लिखा जाता है। यूआरएल के कई हिस्से होते हैं। यूआरएल के अंगों को एक निश्चित क्रम में लिखा जाता है। सबसे पहले scheme लिखा जाता है जो नेटवर्क के प्रोटोकॉल स्कीम को बताता है जैसे http, https, ftp, file इत्यादि। इसके बाद नेटवर्क के prefix को लिखा जाता है जो आमतौर पर www होता है। इसके बाद होस्ट आईपी एड्रेस या डोमेन नेम लिखा जाता है और colon के बाद port नम्बर लिखा जाता है। उसके बाद resource का path लिखा जाता है जो फोल्डर और उस फोल्डर के अधीन के फ़ोल्डर्स को बताता हैं। तत्पश्चात उस फ़ाइल का नाम लिखा जाता है जिसको यूजर प्राप्त करना चाहता है। कभी कभी यूजर डाटा को सर्वर पर भेजना चाहता है जिसके लिए क्वेरी स्ट्रींग का उपयोग ? चिह्न के बाद किया जाता है। क्वेरी स्ट्रिंग और पोर्ट नम्बर वैकल्पिक हैं। सभी यूआरएल में क्वेरी स्ट्रींग और पोर्ट संख्या होना अनिवार्य नहीं है।

यूआरएल एनकोडिंग

यूआरएल के कैरेक्टर्स के बीच में किसी प्रकार का गैप नहीं होना चाहिए और यूआरएल में यह आशा की जाती है कि यूआरएल में केवल ASCII कैरेक्टर्स यूज किया गया है। अब अगर इस शर्त का पालन नहीं हो तो यूआरएल के कैरेक्टर्स की इनकोडिंग की जाती है जिसे यूआरएल इनकोडिंग कहते हैं।

यूआरएल इनकोडिंग के अंतर्गत जितने भी non-ASCII कैरेक्टर्स होते हैं, उनको ASCII कैरक्टर्स में कन्वर्ट कर दिया जाता है और इसी प्रकार अगर कैरेक्टर्स के बीच में व्हाईटस्पेस है तो उसे भी ASCII कैरेक्टर्स में कन्वर्ट कर दिया जाता है।

यूआरएल का उद्देश्य

जब भी क्लाइंट मशीन किसी डाटा के लिए सर्वर मशीन से रिक्वेस्ट करता है तो इसके लिए ब्राउज़र के एड्रेसबार में यूआरएल को लिखा जाता है। यूआरएल का पूरा अर्थ है यूनिफॉर्म रिसोर्स लोकेटर। हिंदी में इसका अर्थ हुआ सामान्य संसाधन की स्थिति को बताने वाला। अब इसका अर्थ यह हुआ कि किसी संसाधन जैसे html या asp या पीडीएफ फ़ाइल की प्राप्ति के लिए उसका एड्रेस लिखना। 

जब एड्रेस बार में सर्वर मशीन के डोमेन नेम को लिखा जाता है तो वह वस्तुतः आईपी एड्रेस में बदल जाता है। साथ ही प्रोटोकॉल को ध्यान में रखते हुए डोमेन नेम के बाद पोर्ट की संख्या कॉलन के बाद लिखी जाती है।

पोर्ट संख्या किसी सॉफ्टवेयर सर्विस के बारे में बताता है। HTTP के लिए पोर्ट संख्या 80 है जबकि DNS के लिए यह 53 है जबकि SMTP के लिए यह 25 है।

आमतौर पर HTTP प्रोटोकॉल के अंतर्गत पोर्ट संख्या निश्चित होती है और उसका मान 80 होता है। कहने का अर्थ यह है कि HTTP प्रोटोकोल के लिए पोर्ट की संख्या सामान्यतः 80 होता है अतः उसे यूआरएल में लिखा भी नहीं जाता है। ऐसी स्थिति में यह 80 मान लिया जाता है। निम्नलिखित उदाहरण को देखे इसमें पोर्ट संख्या का उल्लेख नहीं किया गया है और प्रोटोकॉल HTTP है अतः पोर्ट संख्या 80 होगी।

http://www.example.com/resourcepath

लेकिन अगर आप चाहते हैं कि किसी अन्य पोर्ट से एचटीटीपी प्रोटोकोल का पालन किया जाए तो उस संख्या को हम लिख सकते हैं। 

http://www.example.com:8080/resourcepath

उपर्युक्त उदाहरण में पोर्ट की संख्या स्पष्ट रूप से 8080 दी गई है यद्यपि HTTP प्रोटोकॉल का उपयोग यूआरएल में किया गया है। 

यूआरएल पोर्ट का महत्व क्या है?

पोर्ट का अर्थ होता है किसी चीज को एक जगह से दूसरी जगह पहुंचाने का स्थल जैसे बंदरगाह, एयरपोर्ट इत्यादि। जब माल एक जगह से दूसरी जगह भेजा जाता है तो उसे एक्सपोर्ट कहते हैं और जब माल दूसरी जगह से उस स्थान पर आता है तो उसे इंपोर्ट कहते हैं।

कम्युनिकेशन के अंतर्गत भी बिल्कुल इसी तरह की बात है। इंफॉर्मेशन को हम माल मान सकते हैं जिसका वहन एक जगह से दूसरी जगह अर्थात क्लाइंट मशीन से सर्वर मशीन और सर्वर मशीन से क्लाइंट मशीन पर होता है। 

जिस तरह अलग-अलग तरह के माल होते हैं और उनकी ढुलाई के लिए अलग-अलग तरह के उपाय हैं जैसे कुछ माल हवाई जहाज से एयरपोर्ट से जाता है जबकि कुछ माल जलमार्ग से। कुछ माल ज्यादा सुरक्षित तरीके से पहुंचाया जाता है जबकि कुछ बिना किसी सुरक्षा उपाय के। ठीक इसी तरह, इंटरनेट कम्युनिकेशन के अंतर्गत कुछ सूचनाएं अत्यंत ही सुरक्षित तरीके से पहुंचाई जाती है तो कुछ सामान्य तरीके से। अलग अलग तरह की सूचनाओं के लिए अलग अलग पोर्ट संख्या का उपयोग होता है।

पोर्ट संख्या अर्थात निश्चित सॉफ्टवेयर सेवा

पोर्ट संख्या वस्तुतः उस सॉफ्टवेयर सर्विस को इंगित करता है जिसका उपयोग उस इंफॉर्मेशन को प्रोसेस करने के लिए किया जाता है जैसे कि कोई मेल सर्विस है तो उस मेल सर्विस के लिए एक खास तरह का पोर्ट बनाया गया है। जब भी किसी कंप्यूटर से कोई ईमेल दूसरे कंप्यूटर पर जाता है तो उसके लिए एक निश्चित पोर्ट संख्या है जिस संख्या पर मेल जाता है और ईमेल सॉफ्टवेयर की सहायता से उस ईमेल की प्रोसेसिंग की जाती है।

जैसा की मैंने पहले ही बताया है कि पोर्ट संख्या किसी सॉफ्टवेयर सर्विस के बारे में बताता है। HTTP के लिए पोर्ट संख्या 80 है जबकि DNS के लिए यह 53 है जबकि SMTP के लिए यह 25 है। ये सभी अलग अलग पोर्ट अलग अलग सॉफ्टवेयर सर्विसेज के लिए आरक्षित हैं।

विकिपीडिया के अनुसार, port नम्बर सॉफ्टवेयर सर्विस से सम्बंधित है।

पोर्ट नंबर हमेशा होस्ट के आईपी एड्रेस और संचार के लिए उपयोग किए जाने वाले transport प्रोटोकॉल के प्रकार से जुड़ा होता है। यह किसी संदेश के गंतव्य या उत्पत्ति नेटवर्क एड्रेस को पूरा करता है। 

जब request मेसेज सर्वर मशीन पर पहुंचता है तो यह नहीं मानना चाहिए कि सन्देश गन्तव्य तक पहुंच गया। वस्तुतः उस सन्देश को उस मशीन के उस सॉफ्टवेयर एप्लिकेशन तक पहुंचाना होता है जहां उस सन्देश की प्रोसेसिंग हो सके। अतः पोर्ट नम्बर गन्तव्य एड्रेस को पूरा करता है।

विशिष्ट पोर्ट नंबर विशिष्ट सेवाओं की पहचान करने के लिए आरक्षित हैं ताकि एक आने वाले पैकेट को आसानी से उस सेवा से सम्बंधित एप्लिकेशन को अग्रेषित/forwarded किया जा सके।  यह सुरक्षा उपाय भी प्रदान करता है क्योंकि केवल आरक्षित सेवा के लिए वह पोर्ट उपलब्ध होता है।

वर्चुअल डायरेक्टरी

वेबसाइट को एक वर्चुअल डायरेक्टरी से इंगित किया जाता है। क्यों?

जब भी किसी वेबसाइट को एक्सेस करना होता है तो यूजर उस वेबसाइट के डोमेन नेम को यूआरएल में लिखता है। जैसे http://www google.com यह गूगल का डोमेन नेम है

यूआरएल में डोमेन नेम लिखने से यूजर को उस वेबसाइट या डोमेन के आईपी एड्रेस को याद नहीं रखना होता है। प्रत्येक वेबसाइट का एक अद्वितीय यूनिक आईपी एड्रेस होता है और उस यूनिक आईपी ऐड्रेस से उस वेबसाइट को एक्सेस किया जाता है।

जब हम यूआरएल में http://www लिखते हैं तो यह बताता है कि यूआरएल के जिस resource जैसे html या asp पेज को एक्सेस करना है उसे एचटीटीपी प्रोटोकोल के द्वारा www नेटवर्क से प्राप्त करना है। www पूरा अर्थ वर्ल्ड वाइड वेब है जिसका अर्थ हुआ संसार भर में बिछा हुआ जाल। यह जाल वस्तुतः कम्प्यूटर के नेटवर्क का होता है जो इंटरनेट पर उपलब्ध होता है। 

इंटरनेट एक टेक्नोलॉजी है जिसकी सहायता से किसी भी दो कंप्यूटर को एक दूसरे से कम्युनिकेशन करने के लिए जोड़ा जा सकता है। दो कंप्यूटर के बीच में कम्युनिकेशन के लिए ऐसे तो कई सारे प्रोटोकॉल उपलब्ध है जिनकी सहायता से ही तो कंप्यूटर आपस में कम्युनिकेट करते हैं परंतु इंटरनेट पर सबसे ज्यादा प्रचलित प्रोटोकोल एचटीटीपी प्रोटोकोल है और हम जब यूआरएल में http:// लिखते हैं तो यह स्पष्ट हो जाता है कि जो कम्युनिकेशन सर्वर से या रिक्वेस्ट जो सर्वर से है वह एचटीटीपी प्रोटोकॉल के द्वारा होगी।

एचटीटीपी के अलावा कुछ अन्य कम्युनिकेशन प्रोटोकोल है जैसे ftp, file, gopher, इत्यादि

👉http://www. के बाद डोमेन नेम को लिखा जाता है जैसे google.com

इस डोमेन नेम को आईपी में कन्वर्ट करने के लिए डोमेन नेम सर्वर डीएनएस (Domain Name System) का उपयोग किया जाता है। डीएनएस के द्वारा यह डोमेन नेम यूनीक आईपी एड्रेस में बदल जाता है। दूसरे शब्दों में डोमेन नेम की मैपिंग आईपी एड्रेस से की जाती है। प्रत्येक डोमेन नेम का एक यूनीक आईपी होता है।

डोमेन डिफॉल्ट पेज

जब यूजर डोमेन नेम के बाद किसी रिसोर्स का नाम नहीं लिखता है तो उस डोमेन नेम से जुड़े सर्वर द्वारा एक इंडेक्स पेज या डिफॉल्ट पेज रेस्पॉन्स के रूप में ब्राउज़र/यूजर के पास भेज दिया जाता है। उदाहरण के लिए, http://www.google.com इस यूआरएल में किसी फ़ाइल का ज़िक्र नहीं है, अतः सर्वर डिफॉल्ट पेज भेजेगा लेकिन यदि किसी फ़ाइल का ज़िक्र यूआरएल में हो जैसे http://www.google.com/sales.html तब सर्वर उस रिक्वेस्ट किए गए फ़ाइल sales.html को भेजेगा। यदि वह फ़ाइल सर्वर पर नहीं है तब सर्वर रेस्पॉन्स इन्फॉर्मेशन में तत्सम्बन्धी सूचना 404 code भेज देगा।

HTTP Request and HTTP Response Messages

इंटरनेट पर क्लाइंट मशीन और सर्वर मशीन के बीच में सूचना के आदान-प्रदान की प्रक्रिया किसी चिट्ठी के भेजने की प्रक्रिया से बहुत मिलता जुलता है। इस बात को हम आगे देखते हैं।

जब हम किसी चिट्ठी को लिखते हैं तो उसमें सूचना होती है लेकिन हम उस सूचना को गुप्त रखने के लिए उस चिट्ठी को किसी लिफाफे में रख देते हैं और उस पर गोंद भी लगा देते हैं ताकि वह सूचना सुरक्षित हो जाए। साथ ही, लिफाफे के बाहर जिस व्यक्ति को सूचना भेजना है उस व्यक्ति का पूरी एड्रेस लिख देते हैं। साथ ही हम अपना पता भी लिख देते हैं ताकि अगर रिसीवर व्यक्ति उस सूचना को प्राप्त नहीं करें तो लिफाफे को वापस भेजने वाले के पास भेजा जा सके।

बिल्कुल यही बात इंटरनेट में दो कंप्यूटर के बीच में कम्युनिकेशन के बीच में होती है। जब भी किसी सूचना को कोई कंप्यूटर, नेटवर्क की सहायता से सर्वर पर भेजता है तो उस सूचना को इंक्रिप्ट कर देता है ताकि वह सूचना सुरक्षित हो जाएं। जिस कंप्यूटर को यह सूचना भेजना है उस कंप्यूटर के बारे में पूरी जानकारी रिक्वेस्ट ऑब्जेक्ट के भीतर होता है। साथ ही उस रिक्वेस्ट ऑब्जेक्ट के भीतर भेजने वाले कंप्यूटर की भी पूरी डिटेल होती है जैसे किस ब्राउज़र की मदद से, किस मशीन से, उसका आईपी ऐड्रेस इत्यादि से सूचना भेजी गई। इन सभी request तथ्यों या सूचनाओं को दो भागों में बांटते हैं एक को header और दूसरे को body कहते हैं। मुख्य सूचना बॉडी में होता है जबकि हेडर में डाटा का मेटा डाटा होता है। गूगल क्रोम या मोज़िला जैसे किसी भी ब्राउज़र में इस जानकारी को देखा जा सकता है।

अतः वेब डेवलपर को यह बात हमेशा याद रखना है कि उसका कोड दो मशीनों के बीच कम्युनिकेशन से जुड़ा हुआ है, यद्यपि नए डेवलपर को यह बात समझने में थोड़ा समय लगता है।

HTTP VERBS

सबसे पहले यह बात याद रखें वेब डेवलपमेंट के अंतर्गत Request और Response हमेशा एचटीटीपी प्रोटोकोल के अंतर्गत ही होती है। जैसा कि हम जानते हैं कि HTTP प्रोटोकोल stateless प्रोटोकॉल है, स्टैटलेस प्रोटोकोल होने के कारण रिक्वेस्ट से संबंधित इंफॉर्मेशन को सर्वर स्टोर करके नहीं रखता। जब भी क्लाइंट को किसी इंफॉर्मेशन की जरूरत होती तब वह सर्वर को रिक्वेस्ट भेजता है। जैसा की रिक्वेस्ट भेजना एक क्रिया है इस क्रिया को HTTP प्रोटोकोल के अंतर्गत HTTP VERB के द्वारा निर्धारित किया जाता है। Request क्रिया कई प्रकार का हो सकता है जैसे GET, POST, PUT, DELETE इत्यादि। इसे हम आगे किसी पोस्सट में विस्तार से समझेंगे। 

HTTP प्रोटोकॉल के Verbs के अतिरिक्त एक और विषय समझने लायक है। वह है कनेक्शन ओरिएंटेड प्रोटोकाल। HTTP प्रोटोकॉल एक कनेक्शन ओरिएंटेड प्रोटोकॉल है। इसका क्या अर्थ है? यह हम आगे देखेंगे।


लेखक अजीत कुमार 14 August 2021, अंतिम बार 25 June 2026 को अद्यतन किया।

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Differences between in-process and out-of-process hosting models

Web Fundamental Concepts in Hindi for Beginners - FAQs with their Answers Part-1

Introduction to ASP.NET Core and Web Frameworks